"Note: This option must set it in .vimrc(_vimrc).  NOT IN .gvimrc(_gvimrc)!
call histadd("cmd","load ".expand('<sfile>:t:r')."...")
"	" Disable AutoComplPop.
"	let g:acp_enableAtStartup = 0
"	" Use neocomplcache.
"	let g:neocomplcache_enable_at_startup = 0
"	" Use smartcase.
"	let g:neocomplcache_enable_smart_case = 1
"	" Set minimum syntax keyword length.
"	let g:neocomplcache_min_syntax_length = 1
"	let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'
"	
"	" Enable heavy features.
"	" Use camel case completion.
"	"let g:neocomplcache_enable_camel_case_completion = 1
"	" Use underbar completion.
"	"let g:neocomplcache_enable_underbar_completion = 1
"	
"	" Define dictionary.
"	let g:neocomplcache_dictionary_filetype_lists = {
"	    \ 'default' : '',
"	    \ 'vimshell' : $HOME.'/.vimshell_hist',
"	    \ 'scheme' : $HOME.'/.gosh_completions'
"	        \ }
"	
"	" Define keyword.
"	if !exists('g:neocomplcache_keyword_patterns')
"	    let g:neocomplcache_keyword_patterns = {}
"	endif
"	let g:neocomplcache_keyword_patterns['default'] = '\h\w*'
"	
"	" Plugin key-mappings.
"	inoremap <expr><C-g>     neocomplcache#undo_completion()
"	inoremap <expr><C-l>     neocomplcache#complete_common_string()
"	
"	" Recommended key-mappings.
"	" <CR>: close popup and save indent.
"	inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
"	function! s:my_cr_function()
"	  return neocomplcache#smart_close_popup() . "\<CR>"
"	  " For no inserting <CR> key.
"	  "return pumvisible() ? neocomplcache#close_popup() : "\<CR>"
"	endfunction
"	" <TAB>: completion.
"	inoremap <expr><TAB>  pumvisible() ? "\<C-n>" : "\<TAB>"
"	" <C-h>, <BS>: close popup and delete backword char.
"	inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
"	inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
"	inoremap <expr><C-y>  neocomplcache#close_popup()
"	inoremap <expr><C-e>  neocomplcache#cancel_popup()
"	" Close popup by <Space>.
"	"inoremap <expr><Space> pumvisible() ? neocomplcache#close_popup() : "\<Space>"
"	
"	" For cursor moving in insert mode(Not recommended)
"	"inoremap <expr><Left>  neocomplcache#close_popup() . "\<Left>"
"	"inoremap <expr><Right> neocomplcache#close_popup() . "\<Right>"
"	"inoremap <expr><Up>    neocomplcache#close_popup() . "\<Up>"
"	"inoremap <expr><Down>  neocomplcache#close_popup() . "\<Down>"
"	" Or set this.
"	"let g:neocomplcache_enable_cursor_hold_i = 1
"	" Or set this.
"	"let g:neocomplcache_enable_insert_char_pre = 1
"	
"	" AutoComplPop like behavior.
"	"let g:neocomplcache_enable_auto_select = 1
"	
"	" Shell like behavior(not recommended).
"	"set completeopt+=longest
"	"let g:neocomplcache_enable_auto_select = 1
"	"let g:neocomplcache_disable_auto_complete = 1
"	"inoremap <expr><TAB>  pumvisible() ? "\<Down>" : "\<C-x>\<C-u>"
"	
"	" Enable omni completion.
"	autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
"	autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
"	autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
"	autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
"	autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
"	
"	" Enable heavy omni completion.
"	if !exists('g:neocomplcache_omni_patterns')
"	  let g:neocomplcache_omni_patterns = {}
"	endif
"	let g:neocomplcache_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::'
"	let g:neocomplcache_omni_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)'
"	let g:neocomplcache_omni_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'
"	
"	" For perlomni.vim setting.
"	" https://github.com/c9s/perlomni.vim
"	let g:neocomplcache_omni_patterns.perl = '\h\w*->\h\w*\|\h\w*::'



" NEOCOMPLCACHE SETTINGS
"	let g:neocomplcache_enable_at_startup = 1
"	imap neosnippet#expandable() ? "(neosnippet_expand_or_jump)" : pumvisible() ? "" : ""
"	smap neosnippet#expandable() ? "(neosnippet_expand_or_jump)" :
"	let g:neocomplcache_force_overwrite_completefunc = 1
"	if !exists('g:neocomplcache_omni_functions')
"	  let g:neocomplcache_omni_functions = {}
"	endif
"	if !exists('g:neocomplcache_force_omni_patterns')
"	  let g:neocomplcache_force_omni_patterns = {}
"	endif
"	let g:neocomplcache_force_overwrite_completefunc = 1
"	let g:neocomplcache_force_omni_patterns['python'] = '[^. t].w*'
"	set ofu=syntaxcomplete#Complete
"	au FileType python set omnifunc=pythoncomplete#Complete
"	au FileType python let b:did_ftplugin = 1
" Vim-jedi settings
let g:jedi#popup_on_dot = 0



let g:acp_enableAtStartup = 0
let g:neocomplcache_enable_prefetch = 1
let g:neocomplcache_enable_at_startup = 0
let g:neocomplcache_enable_smart_case = 1
let g:neocomplcache_disable_auto_complete = 1
let g:neocomplcache_force_overwrite_completefunc = 1
let g:neocomplcache_temporary_dir = '~/.cache/neocomplcache'

function! CleverCr()
    if pumvisible()
        if neosnippet#expandable()
            let exp = "\<Plug>(neosnippet_expand)"
            return exp . neocomplcache#close_popup()
        else
            return neocomplcache#close_popup()
        endif
    else
        return "\<CR>"
    endif
endfunction

function! CleverTab()
    if pumvisible()
        return "\<C-n>"
    endif
    let substr = strpart(getline('.'), 0, col('.') - 1)
    let substr = matchstr(substr, '[^ \t]*$')
    if strlen(substr) == 0
        " nothing to match on empty string
        return "\<Tab>"
    else
        " existing text matching
        if neosnippet#expandable_or_jumpable()
            return "\<Plug>(neosnippet_expand_or_jump)"
        else
            return neocomplcache#start_manual_complete()
        endif
    endif
endfunction

" <CR> close popup and save indent or expand snippet
imap <expr> <CR> CleverCr()

" <Tab> completion and expansion
imap <expr> <Tab> CleverTab()

smap <expr> <Tab> neosnippet#expandable_or_jumpable() ?
            \ "\<Plug>(neosnippet_expand_or_jump)" :
            \ "\<Tab>"

imap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
